package Fisica;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import Logica.Util;
import Modelo.Fac_Ventas;

public class DAOTicket {

	public static String SELECT = "select * from fac_ventas ";	
	public static String FIRST = "SELECT * FROM fac_ventas order by id asc;";
	public static String LAST = "SELECT * FROM fac_ventas order by id desc;";
	public static String PRE = "SELECT * FROM fac_ventas WHERE id < ? order by id desc";
	public static String POST = "SELECT * FROM fac_ventas WHERE id > ? order by id asc";
	public static String INSERT = "INSERT INTO fac_ventas (nro_ticket, puntos, id_tarjeta, obs, fecha) VALUES (?,?,?,?,?);";
	
	
	public static Modelo.Fac_Ventas get (String cod, String fecha, int comp){
		String sql = SELECT + "where v_codigo = ? and v_fecha_operacion = ? and v_numero_comprobante = ?;";
		try {
			PreparedStatement st = Conexion.getConexion().prepareStatement(sql);	
			st.setString(1, cod);
			st.setString(2, fecha);
			st.setInt(3, comp);
			ResultSet rs = st.executeQuery();			
			
			if (rs.next()){
				Modelo.Fac_Ventas a = new Modelo.Fac_Ventas(); 
				a.setDescripcion(rs.getString("v_descripcion"));
				a.setNombre(rs.getString("v_nombre"));
				a.setPrecio_unitario(rs.getFloat("v_precio_unitario"));
				a.setIva(rs.getFloat("v_iva_ri")+rs.getFloat("v_iva_rni"));
				a.setBonificacion(rs.getFloat("v_bonificacion")); //total del ticket
				a.setCantidad(rs.getInt("v_cantidad"));
				a.setNumero(rs.getInt("v_numero_mov")); //el numero de movimiento en el ticket (CIERRE) es 0.
				a.setNumero_comprobante(rs.getInt("v_numero_comprobante"));
				a.setPunto_venta(rs.getInt("pto_numero"));
				a.setCuit(rs.getInt("v_numero_cuit"));
				a.setCtacte(rs.getInt("v_numero_ctacte"));
				a.setFecha(rs.getDate("v_fecha_operacion"));
				a.setCodigo(rs.getString("v_codigo"));  //codigo de articulo, CIERRE si es para obtener un cierre de ticket.
				
				return a;
			}			
		} catch (SQLException e) {
			System.out.print("ERROR EN LA RECUPERACION DE DATOS DE LA BASE");
			e.printStackTrace();
		} 				
		return new Fac_Ventas();
	}
	
	
	public static List<Object> getList (String fecha){
		List<Object> list = new ArrayList();
		String sql = SELECT +"v_fecha_operacion > ?;";
		try {
			PreparedStatement st = Conexion.getConexion().prepareStatement(sql);	
			st.setString(1, fecha);
			ResultSet rs = st.executeQuery();			
			Fac_Ventas a;
			while (rs.next()){				
				a = new Modelo.Fac_Ventas(); 
				a.setDescripcion(rs.getString("v_descripcion"));
				a.setNombre(rs.getString("v_nombre"));
				a.setPrecio_unitario(rs.getFloat("v_precio_unitario"));
				a.setIva(rs.getFloat("v_iva_ri")+rs.getFloat("v_iva_rni"));
				a.setBonificacion(rs.getFloat("v_bonificacion")); //total del ticket
				a.setCantidad(rs.getInt("v_cantidad"));
				a.setNumero(rs.getInt("v_numero_mov")); //el numero de movimiento en el ticket (CIERRE) es 0.
				a.setNumero_comprobante(rs.getInt("v_numero_comprobante"));
				a.setPunto_venta(rs.getInt("pto_numero"));
				a.setCuit(rs.getInt("v_numero_cuit"));
				a.setCtacte(rs.getInt("v_numero_ctacte"));
				a.setFecha(rs.getDate("v_fecha_operacion"));
				a.setCodigo(rs.getString("v_codigo"));  //codigo de articulo, CIERRE si es para obtener un cierre de ticket.
				
				list.add(a);
			}			
		} catch (SQLException e) {
			System.out.print("ERROR EN LA RECUPERACION DE DATOS DE LA BASE");
			e.printStackTrace();
		} 				
		return list;
	}
	
	
	 
}
